/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.app2.vista.management;

import com.app2.ejbs.RecursoFacade;
import com.app2.entidades.Recurso;
import java.io.Serializable;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.view.ViewScoped;
import javax.inject.Named;
import org.primefaces.context.RequestContext; 
/**
 *
 * @author Diana Vasquez
 */
@Named(value = "recursoController")
@ViewScoped

public class RecursoController implements Serializable {

    /**
     * Creates a new instance of RecursoController
     */
    @EJB
    RecursoFacade recursoFacade;
    private List<Recurso> listaRecursos;
    private Recurso recurso;
    private Recurso recursoSelecionado;

    public List<Recurso> getListaRecursos() {
        if (listaRecursos == null) {
            listaRecursos = new ArrayList<>();
            listaRecursos = recursoFacade.findAll();
        }
        return listaRecursos;
    }

    @PostConstruct
    public void initialize() {
        this.getListaRecursos();
    }

    public void initializeResource() {
        this.recurso = new Recurso();
    }

    public boolean validarExistente() {
        Recurso encontrado;
        encontrado = recursoFacade.find(this.recurso.getIdRecurso());
        return encontrado != null;
    }

    public void crearRecurso(ActionEvent actionEvent) throws SQLException {
        boolean Existe;
        Existe = validarExistente();

        if (Existe == false) {
            System.out.println(this.recurso.getIdRecurso());
            recursoFacade.create(recurso);
            listaRecursos.add(recurso);
            FacesContext.getCurrentInstance().addMessage(null,
                    new FacesMessage(FacesMessage.SEVERITY_INFO, "El recurso ha sido creado", "Creado exitosamente"));
            RequestContext.getCurrentInstance().addCallbackParam("loggedIn", true);
        } else {
            FacesContext.getCurrentInstance().addMessage(null,
                    new FacesMessage(FacesMessage.SEVERITY_ERROR, "El id de recurso ya existe", "Recurso ya existe"));
            RequestContext.getCurrentInstance().addCallbackParam("loggedIn", false);
        }

    }

    public void eliminarRecurso(ActionEvent actionEvent) {
        recursoFacade.remove(recursoSelecionado);
        listaRecursos = new ArrayList<>(recursoFacade.findAll());
    }

    public Recurso getRecurso() {
        return recurso;
    }

    public void setRecurso(Recurso recurso) {
        this.recurso = recurso;
    }

    public Recurso getRecursoSelecionado() {
        return recursoSelecionado;
    }

    public void setRecursoSelecionado(Recurso recursoSelecionado) {
        this.recursoSelecionado = recursoSelecionado;
    }

    public RecursoController() {

    }

}
